package com.chuangke.common.utils;

import java.util.Properties;

import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;

import cn.hutool.core.util.StrUtil;

public class CaptchaUtils {

    public static Producer getProducer(String captchaLength) {
        Properties properties = new Properties();
        //图片边框，合法值yes，no，默认值yes
        properties.put(Constants.KAPTCHA_BORDER, "no");
        //边框颜色，合法值rgb(and optional alpha)或者 white,black,blue，默认值black
        properties.put(Constants.KAPTCHA_BORDER_COLOR, "blue");
        //边框厚度，合法值>0,默认值为1
        properties.put(Constants.KAPTCHA_BORDER_THICKNESS, 2);
        //图片宽度，默认值200
        properties.put(Constants.KAPTCHA_IMAGE_WIDTH, 200);
        //图片高度，默认值50
        properties.put(Constants.KAPTCHA_IMAGE_HEIGHT, 50);
        //图片实现类，默认值com.google.code.kaptcha.impl.DefaultKaptcha
        properties.put(Constants.KAPTCHA_PRODUCER_IMPL, "com.google.code.kaptcha.impl.DefaultKaptcha");
        /*文本实现类：
         5个字母的随机文本创建 com.google.code.kaptcha.text.impl.FiveLetterFirstNameTextCreator
         中文验证码文本 com.google.code.kaptcha.text.impl.ChineseTextProducer
         根据配置的文本集合生成验证码 com.google.code.kaptcha.text.impl.DefaultTextCreator 默认值
         */
        properties.put(Constants.KAPTCHA_TEXTPRODUCER_IMPL, "com.google.code.kaptcha.text.impl.DefaultTextCreator");
        //文本集合，验证码值从此集合中获取,默认值abcde2345678gfynmnpwx
        properties.put(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, "abcde2345678gfynmnpwx");

        captchaLength = !StrUtil.isBlank(captchaLength) ? captchaLength : "5";
        //验证码长度,默认值为5
        properties.put(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, captchaLength);
        //字体,默认值Arial, Courier(如果使用中文验证码，则必须使用中文的字体，否则出现乱码)
        properties.put(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial");
        //字体大小，默认值为40px
        properties.put(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, "40");
        //字体颜色，合法值： r,g,b 或者 white,black,blue，默认值black
        properties.put(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black");
        //文字间隔，默认值为2
        properties.put(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "2");
        //干扰实现类，默认值priv.kerlomz.kaptcha.impl.DefaultNoise
        /*图片样式：
         com.google.code.kaptcha.impl.DefaultNoise 默认
         com.google.code.kaptcha.impl.NoNoise      无干扰
         */
        properties.put(Constants.KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.DefaultNoise");
        //干扰 颜色，合法值： r,g,b 或者 white,black,blue，默认值black
        properties.put("kaptcha.noise.color", "blue");
        /*图片样式：
         水纹 com.google.code.kaptcha.impl.WaterRipple
         鱼眼 com.google.code.kaptcha.impl.FishEyeGimpy
         阴影 com.google.code.kaptcha.impl.ShadowGimpy
         */
        properties.put(Constants.KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.WaterRipple");
        //背景实现类，默认值com.google.code.kaptcha.impl.DefaultBackground
        properties.put(Constants.KAPTCHA_BACKGROUND_IMPL, "com.google.code.kaptcha.impl.DefaultBackground");
        //背景颜色渐变，开始颜色，默认值lightGray/192,193,193
        properties.put(Constants.KAPTCHA_BACKGROUND_CLR_FROM, "255,255,255");
        //背景颜色渐变， 结束颜色，默认值white
        properties.put(Constants.KAPTCHA_BACKGROUND_CLR_TO, "white");
        //文字渲染器，默认值com.google.code.kaptcha.text.impl.DefaultWordRenderer
        properties.put(Constants.KAPTCHA_WORDRENDERER_IMPL, "com.google.code.kaptcha.text.impl.DefaultWordRenderer");

        Config config = new Config(properties);
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }

}
